home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / LIBRARY / WINRES / WINRES.TXT < prev    next >
Text File  |  1994-09-15  |  20KB  |  655 lines

  1.  Unit WinRes   Version 1.20
  2.  ▀▀▀▀▀▀▀▀▀▀▀
  3.  
  4. The WinRes unit is used to utilize Windows' resources and other files.
  5. It defines data structures and implements powerful routines for easy
  6. access.
  7.  
  8.  WinRes Unit: Functions and Procedures
  9.  WinRes Unit: Type Definitions        
  10.  Supported Resource Types             
  11.  Copyright                            
  12.  
  13.  WinRes Unit: Functions and Procedures
  14.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  15.  
  16.  AnsiTo437         
  17.  AnsiTo437Str      
  18.  ConvertMarkers     *
  19.  CreateLinks        *
  20.  DeleteBitmap      
  21.  DoneClasses        *
  22.  FreeStringBlock   
  23.  GetStringFromBlock
  24.  InitClasses        *
  25.  InsertLink         *
  26.  LoadBitmap        
  27.  LoadBitmapFile    
  28.  LoadCursor        
  29.  LoadDialog         *
  30.  LoadMenu           *
  31.  LoadString        
  32.  LoadStringBlock   
  33.  ReadFontInfo      
  34.  RegisterClass      *
  35.  SkipStub          
  36.  SkipToResource    
  37.  SkipToResourceS   
  38.  SkipToResTbl      
  39.  
  40. * These routines are not implemented for Turbo Pascal 6.0.
  41.  
  42.  See also:  Unit WinRes
  43.  
  44.  AnsiTo437                     (Unit WinRes)
  45.  ▀▀▀▀▀▀▀▀▀
  46.  
  47.  procedure AnsiTo437(Buf: PChar);
  48.  
  49. This procedure translates a null-terminated string from ANSI character set
  50. (code page 1007) to DOS character set (code page 437).
  51.  
  52.  AnsiTo437Str                  (Unit WinRes)
  53.  ▀▀▀▀▀▀▀▀▀▀▀▀
  54.  
  55.   procedure AnsiTo437Str(Str: PString);
  56.  
  57. This procedure translates a Pascal string from ANSI character set
  58. (code page 1007) to DOS character set (code page 437).
  59.  
  60.  ConvertMarkers                (Unit WinRes)
  61.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  62.  
  63.  function ConvertMarkers(Buf: PChar; Max: Word): Boolean;
  64.  
  65. This function translates a null-terminated string which may include
  66. marker characters in Windows' style (&) into a string usable by
  67. Turbo Vision or Graphics Vision by inserting marker characters in
  68. Vision's style (~~).
  69.  
  70. The string length may grow during this operation. Specify the string
  71. buffer size in the Max parameter.
  72.  
  73. ConvertMarkers returns true if the string includes marker characters.
  74.  
  75.  CreateLinks                   (Unit WinRes)
  76.  ▀▀▀▀▀▀▀▀▀▀▀
  77.  
  78.  procedure CreateLinks(Info: PDialogInfo;
  79.    Link: pointer);
  80.  
  81. This procedure solves the linking demands of the dialog described by
  82. the TDialogInfo structure by creating links to the specified element
  83. (Link).
  84.  
  85. Refer to Using Dialog Templates for more information.
  86.  
  87.  DeleteBitmap                  (Unit WinRes)
  88.  ▀▀▀▀▀▀▀▀▀▀▀▀
  89.  
  90.  procedure DeleteBitmap(Bitmap: PBitmap);
  91.  
  92. This procedure deletes a TBitmap structure from the memory.
  93.  
  94.  DoneClasses                   (Unit WinRes)
  95.  ▀▀▀▀▀▀▀▀▀▀▀
  96.  
  97.  procedure DoneClasses;
  98.  
  99. This procedure closes the dialog and control class management.
  100.  
  101. Refer to Using Dialog Templates for more information.
  102.  
  103.  FreeStringBlock               (Unit WinRes)
  104.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  105.  
  106.  procedure FreeStringBlock(Block: PStringBlock);
  107.  
  108. This procedure deletes a string block from the memory.
  109.  
  110.  Refer to:    LoadStringBlock   
  111.               GetStringFromBlock
  112.  
  113.  
  114.  GetStringFromBlock            (Unit WinRes)
  115.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  116.  
  117.  function GetStringFromBlock(Block: PStringBlock;
  118.    Index: Word): PString;
  119.  
  120. This function searches the specified string block and any linked blocks
  121. for the string with the specified index. The function returns a pointer
  122. to that string, or NIL if the block including this string is not present.
  123.  
  124.  Refer to:  LoadStringBlock
  125.  
  126.  InitClasses                   (Unit WinRes)
  127.  ▀▀▀▀▀▀▀▀▀▀▀
  128.  
  129.  procedure InitClasses;
  130.  
  131. This procedures initializes dialog and control class management.
  132.  
  133. Refer to Using Dialog Templates for more information.
  134.  
  135.  InsertLink                    (Unit WinRes)
  136.  ▀▀▀▀▀▀▀▀▀▀
  137.  
  138.  procedure InsertLink(Info: PDialogInfo;
  139.    AProc: pointer; AControl: pointer);
  140.  
  141. This procedure stores a link to the dialog information structure, that means
  142. a label's link to a control element to be defined later.
  143.  
  144.  Parameter   Description
  145.  ─────────────────────────────────────────────
  146.  Info        Pointer to a TDialogInfo
  147.              structure describing the dialog
  148.              window to be established.
  149.  
  150.  AProc       Pointer to TLinkProc procedure
  151.              which will establish a stored
  152.              link.
  153.  
  154.  AControl    Pointer to the label.
  155.  
  156. Refer to Using Dialog Templates for more information.
  157.  
  158.  LoadBitmap                    (Unit WinRes)
  159.  ▀▀▀▀▀▀▀▀▀▀
  160.  
  161.  function LoadBitmap(var S: TStream;
  162.    BitmapName: PChar): PBitmap;
  163.  
  164. This function assumes that the file pointer of the stream points to
  165. the resource table. LoadBitmap opens the bitmap resource named BitmapName,
  166. and creates a TBitmap structure.
  167.  
  168. Note: Packed bitmaps cannot be loaded in this version.
  169.  
  170.  Refer to:  DeleteBitmap
  171.  
  172.  LoadBitmapFile                (Unit WinRes)
  173.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  174.  
  175.  function LoadBitmapFile(
  176.    var S: TStream): PBitmap;
  177.  
  178. This function assumes that the file pointer of the stream points to
  179. the beginning of a device-independent bitmap file (*.DIB, *.BMP).
  180. LoadBitmapFile loads the bitmap from this file and creates a TBitmap
  181. structure.
  182.  
  183. Note: Packed bitmaps cannot be loaded in this version.
  184.  
  185.  Refer to:  DeleteBitmap
  186.  
  187.  LoadCursor                    (Unit WinRes)
  188.  ▀▀▀▀▀▀▀▀▀▀
  189.  
  190.  function LoadCursor(var S: TStream;
  191.    CursorName: PChar): PMyCursor;
  192.  
  193. This function assumes that the file pointer of the stream points to
  194. the resource table. LoadCursor opens the mouse cursor resource named
  195. CursorName, and creates a TMyCursor data structure.
  196.  
  197. This data structure can be used directly by the MyMouse unit.
  198. Define a GetMCursor service routine, which sets the cursor pointer to
  199. the data structure if this cursor shape is required. Refer to MyMouse's
  200. documentation for details.
  201.  
  202.  LoadDialog                    (Unit WinRes)
  203.  ▀▀▀▀▀▀▀▀▀▀
  204.  
  205.  function LoadDialog(var S: TStream;
  206.    DialogName: PChar): pointer;
  207.  
  208. This function assumes that the file pointer of the stream points to
  209. the resource table. LoadDialog opens the dialog template resource named
  210. DialogName, and creates a dialog.
  211.  
  212. Refer to Using Dialog Templates for more information.
  213.  
  214.  LoadMenu                      (Unit WinRes)
  215.  ▀▀▀▀▀▀▀▀
  216.  
  217.  function LoadMenu(var S: TStream; MenuName:
  218.    PChar; Options: Word): pointer;
  219.  
  220. This function assumes that the file pointer of the stream points to
  221. the resource table. LoadMenu opens the menu resource named MenuName,
  222. and creates a menu data structure. Using the Options parameter, you
  223. can specify the type of menu you need.
  224.  
  225.  Options            Description
  226.  ────────────────────────────────────────────
  227.  mo_TurboVision     Creates a structure
  228.                     compatible with TMenu
  229.                     for Turbo Vision.
  230.  
  231.  mo_GraphicsVision  Creates a structure
  232.                     compatible with TMenu
  233.                     for Graphics Vision,
  234.                     using its extended
  235.                     capabilities.
  236.  
  237.  LoadString                    (Unit WinRes)
  238.  ▀▀▀▀▀▀▀▀▀▀
  239.  
  240.  function LoadString(var S: TStream;
  241.    Index: Word): string;
  242.  
  243. This function assumes that the file pointer of the stream points to
  244. the resource table. LoadString retrieves the string with the number
  245. Index from the resource.
  246.  
  247. If you need to load more than one string from a resource, you should use
  248. LoadStringBlock.
  249.  
  250.  
  251.  LoadStringBlock               (Unit WinRes)
  252.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  253.  
  254.  function LoadStringBlock(var S: TStream;
  255.    Index: Word): PStringBlock;
  256.  
  257. This function assumes that the file pointer of the stream points to
  258. the resource table. LoadStringBlock loads the string block, consisting
  259. of 16 strings, which includes the required string from the resource.
  260.  
  261. Using GetStringFromBlock, you can efficiently access the loaded strings.
  262.  
  263.  RegisterClass                 (Unit WinRes)
  264.  ▀▀▀▀▀▀▀▀▀▀▀▀▀
  265.  
  266.  procedure RegisterClass
  267.   (var ClassRec: TClassRec);
  268.  
  269. This procedure registers a dialog or control class for use with LoadDialog.
  270. Before using RegisterClass, InitClasses must be called.
  271.  
  272. A class is described by a static TClassRec structure.
  273.  
  274. Refer to Using Dialog Templates for more information.
  275.  
  276.  ReadFontInfo                  (Unit WinRes)
  277.  ▀▀▀▀▀▀▀▀▀▀▀▀
  278.  
  279.  procedure ReadFontInfo(var S: TStream; var
  280.    FontInfo: TFontInfo; FontDir: Boolean);
  281.  
  282. This function assumes that the file pointer of the stream points to
  283. a font resource, or to an entry of a font directory. ReadFontInfo reads
  284. a font description from the stream. After this operation, the file pointer
  285. points to the next font description, or the font data.
  286.  
  287. Set FontDir = true, if you are reading from a font directory entry.
  288.  
  289. Use the MyFonts unit for using Windows' fonts, and not this utility
  290. routine.
  291.  
  292.  SkipStub                      (Unit WinRes)
  293.  ▀▀▀▀▀▀▀▀
  294.  
  295.  function SkipStub(var S: TStream): Boolean;
  296.  
  297. This function assumes that S is a stream opened for reading of a new-style
  298. EXE file, whose file pointer is at the beginning. The stub (i.e. the old-
  299. style EXE portion) is skipped, so that the file pointer is then on the
  300. new-style header.
  301.  
  302. The function returns true if it was successful.
  303.  
  304.  SkipToResource                (Unit WinRes)
  305.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  306.  
  307.  function SkipToResource(var S: TStream;
  308.    Name, ResType: PChar): Boolean;
  309.  
  310. This function assumes that S is a stream opened for reading, whose file
  311. pointer is at the beginning of the resource table (use SkipStub and
  312. SkipToResTbl). The stream is driven to the resource of the given
  313. type and name.
  314.  
  315. Use MakeIntResource for converting resource or type numbers into the
  316. requested parameters. As the ResType parameter, you can set one of the
  317. rt_XXXX constants. Specify NIL as the name if the first resource of the
  318. given type is to be used.
  319.  
  320. The function returns true if it was successful.
  321.  
  322.  SkipToResourceS               (Unit WinRes)
  323.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  324.  
  325.  function SkipToResourceS(var S: TStream;
  326.    Name, ResType: PChar): LongInt;
  327.  
  328. This function performs the same operation as SkipToResource, but
  329. returns the size of the resource in bytes. If the resource does not
  330. exist, 0 is returned.
  331.  
  332.  
  333.  SkipToResTbl                  (Unit WinRes)
  334.  ▀▀▀▀▀▀▀▀▀▀▀▀
  335.  
  336.  function SkipToResTbl(var S: TStream): Boolean;
  337.  
  338. This function assumes that S is a stream opened for reading of a new-style
  339. EXE file, whose file pointer is at the new-style header (use SkipStub).
  340. The stream is driven to the resource table.
  341.  
  342. The function returns true if it was successful.
  343.  
  344.  
  345.  Unit WinRes: Type Definitions
  346.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  347.  
  348.  Type               Description
  349.  ───────────────────────────────────────────────────────────────────────────
  350.  MakeIntClass       Translate integer values into class identifiers
  351.  MakeIntResource    Translate integer values into type or resource ids
  352.  TBgiFontInfo       Font information of CHR files
  353.  TBitmap            Logical bitmap
  354.  TBitmapCoreHeader  Header of old-style Windows bitmaps
  355.  TBitmapCoreInfo    Information on old-style Windows bitmaps
  356.  TBitmapFileHeader  Header of Windows bitmap files
  357.  TBitmapInfo        Information on Windows bitmaps
  358.  TBitmapInfoHeader  Header of Windows bitmaps
  359.  TClassRec          Registration record for dialog and control classes
  360.  TCpiDevCpHeader    Data structure in CPI files
  361.  TCpiFileHeader     Header of CPI files
  362.  TCpiFontHeader     Data structure in CPI files
  363.  TControlData       Information on a control element
  364.  TCursorDirEntry    Cursor directory entry
  365.  TCursorRes         Data structure in cursor resources
  366.  TDialogBoxHeader   Information on a dialog template
  367.  TDialogInfo        Information on a dialog window
  368.  TExeHeader         Header of old-style EXE files
  369.  TFixedVectorInfo   Data structure in font resource
  370.  TFontDir           Font directory
  371.  TFontInfo          Data structure in font resource
  372.  TInitProc          Procedure for creating physical
  373.                     dialog windows or control elements
  374.  TLinkProc          Procedure for establishing links
  375.  TLinkRec           Link storage
  376.  TMenuHeader        Data structure in menu resource
  377.  TMyCursor          Mouse cursor in MyMouse's format
  378.  TNameInfo          Resource information
  379.  TNormalMenuItem    Data structure in menu resource
  380.  TPopUpMenuItem     Data structure in menu resource
  381.  TPropVectorInfo    Data structure in font resource
  382.  TNewRasterInfo     Data structure in font resource
  383.  TRasterInfo        Data structure in font resource
  384.  TResTable          Resource table
  385.  TRGBQuad           Color data structure
  386.  TRGBTriple         Color data structure
  387.  TStringBlock       String block
  388.  TTypeInfo          Resource type information
  389.  TWinHeader         Header of new-style EXE files
  390.  
  391. Many types are re-definitions of Windows' structures. Detailed information
  392. is available in your Windows API documentation.
  393.  
  394.  Refer to:  Unit WinRes
  395.  
  396.  MakeIntClass                  (Unit WinRes)
  397.  ▀▀▀▀▀▀▀▀▀▀▀▀
  398.  
  399.  MakeIntClass = PChar
  400.  
  401. Use MakeIntClass to translate an integer value into a class identifier.
  402.  
  403.  
  404.  MakeIntResource               (Unit WinRes)
  405.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  406.  
  407.  MakeIntResource = PChar
  408.  
  409. Use MakeIntResource to translate an integer value into a class identifier.
  410.  
  411.  
  412.  TClassRec                     (Unit WinRes)
  413.  ▀▀▀▀▀▀▀▀▀
  414.  
  415.  PClassRec = ^TClassRec;
  416.  TClassRec = record
  417.    Class: PChar;
  418.    Init: pointer;  { TInitProc }
  419.  end;
  420.  
  421. TClassRec is used for providing information on a dialog or control element
  422. class. TClassRec records are declared as static, and registered using
  423. RegisterClass for use by LoadDialog. Refer to Using Dialog Templates
  424. for more information.
  425.  
  426.  Entry     Description
  427.  ─────────────────────────────────────────────
  428.  Class     Null-terminated class identifier.
  429.            Use MakeIntClass for using
  430.            integer classes.
  431.            NIL identifys a generic dialog.
  432.  
  433.  Init      Initialization/creation procedure
  434.            for this class.
  435.  
  436.  
  437.  TDialogInfo                   (Unit WinRes)
  438.  ▀▀▀▀▀▀▀▀▀▀▀
  439.  
  440.  PDialogInfo = ^TDialogInfo;
  441.  TDialogInfo = record
  442.    Base: record x, y: Real end;
  443.    Move: TPoint;
  444.    Grow: TPoint;
  445.    Font: Word;
  446.    Links: PLinkRec;
  447.    Group: Boolean;
  448.    Dialog: pointer;
  449.  end;
  450.  
  451. TDialogInfo structures are used to store information on a dialog window
  452. while it is being created by LoadDialog.
  453.  
  454.  Entry   Description
  455.  ─────────────────────────────────────────────
  456.  Base    Dialog base units
  457.  Move    Start of the client area
  458.  Grow    Size of the client area
  459.  Font    Handle to the font
  460.  Links   List of links to be created
  461.  Group   Indicates the beginning of a control
  462.          element group
  463.  Dialog  Pointer to the dialog structure
  464.  
  465. Note: The interpretation of most of these entries is implementation-
  466. dependent. Refer to Using Dialog Templates for more information.
  467.  
  468.  TInitProc                     (Unit WinRes)
  469.  ▀▀▀▀▀▀▀▀▀
  470.  
  471.  TInitProc = procedure(Data: pointer;
  472.    Info: PDialogInfo);
  473.  
  474. Use procedures like TInitProc for creating dialog windows or a control
  475. element of a certain class.
  476.  
  477. Creating Dialog Windows
  478.  
  479. Data is a pointer to a TDialogBoxHeader data structure. The user-defined
  480. procedure must use this information in order to fill out the TDialogInfo
  481. structure referenced by Info. A pointer to the dialog created must be
  482. put to the Dialog entry of this structure.
  483.  
  484. Creating Control Elements
  485.  
  486. Data is a pointer to a TControlData data structure. The user-defined
  487. procedure must use this information in order to create a control element and
  488. to insert it into the dialog described by the TDialogInfo structure.
  489.  
  490. Refer to Using Dialog Templates for more information.
  491.  
  492.  TLinkProc                     (Unit WinRes)
  493.  ▀▀▀▀▀▀▀▀▀
  494.  
  495.  TLinkProc = procedure(link, control: pointer);
  496.  
  497. Use procedures like TLinkProc for creating a link between to control
  498. elements.
  499.  
  500.  Parameter  Description
  501.  ──────────────────────────────────────────
  502.  link       The linked element
  503.  control    The linking element (label)
  504.  
  505. Refer to Using Dialog Templates for more information.
  506.  
  507.  TLinkRec                      (Unit WinRes)
  508.  ▀▀▀▀▀▀▀▀
  509.  
  510.  PLinkRec = ^TLinkRec;
  511.  TLinkRec = record
  512.    Next: PLinkRec;
  513.    proc: pointer; { TLinkProc }
  514.    control: pointer
  515.  end;
  516.  
  517. A list of TLinkRec structures stores link requests.
  518.  
  519.  Entry    Description
  520.  ──────────────────────────────────────────
  521.  Next     Pointer to the next structure
  522.  proc     Procedure for creating a link
  523.  control  The linking element (label)
  524.  
  525. Refer to Using Dialog Templates for more information.
  526.  
  527.  TMyCursor                     (Unit WinRes)
  528.  ▀▀▀▀▀▀▀▀▀
  529.  
  530.  PMyCursor = ^TMyCursor;
  531.  TMyCursor = record
  532.    mcHeight: Word;
  533.    mcWidth: Word;
  534.    mcHotSpotX: Word;
  535.    mcHotSpotY: Word;
  536.    mcAND: array[0..127] of Byte;
  537.    mcXOR: array[0..127] of Byte
  538.  end;
  539.  
  540. TMyCursor structures are used by the MyMouse unit for representing a
  541. mouse cursor.
  542.  
  543.  Entry       Description
  544.  ───────────────────────────────────────────
  545.  mcHeight    Pixel height of the cursor
  546.  mcWidth     Byte width of the cursor
  547.  mcHotSpotX  Hot spot x
  548.  mcHotSpotY  Hot spot y
  549.  mcAND       ANDn mask of the cursor
  550.  mcXOR       XOR mask of the cursor
  551.  
  552. Refer to your MyMouse documentation for more information.
  553.  
  554.  TStringBlock                  (Unit WinRes)
  555.  ▀▀▀▀▀▀▀▀▀▀▀▀
  556.  
  557.  PStringBlock = ^TStringBlock;
  558.  TStringBlock = record
  559.    sbIndex: Word;
  560.    sbSize: Word;
  561.    sbNext: PStringBlock;
  562.    sbData: record end
  563.  End;
  564.  
  565. TStringBlock structures are used for representing string blocks loaded
  566. from resources in the memory.
  567.  
  568.  Entyr       Description
  569.  ────────────────────────────────────────────
  570.  sbIndex     Starting index divided by 16
  571.  sbSize      String data size
  572.  sbNext      Pointer to the next structure
  573.  sbData      String data
  574.  
  575.  
  576.  Resource Type Constants       (Unit WinRes)
  577.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  578.  
  579.  Constant        Resource Type       Load Using
  580.  ─────────────────────────────────────────────────
  581.  rt_Cursor       Mouse cursor        LoadCursor
  582.  rt_Bitmap       Bitmap              LoadBitmap
  583.  rt_Icon         Symbol
  584.  rt_Menu         Menu                LoadMenu
  585.  rt_Dialog       Dialog template     LoadDialog
  586.  rt_String       String table        LoadString
  587.  rt_FontDir      Font directory      **
  588.  rt_Font         Font                **
  589.  rt_Accelerator  Key combination
  590.  rt_RCData       Unstructured Data
  591.  
  592.  ** You can load fonts (bitmapped and scalable
  593.     ones) using the MyFonts unit.
  594.  
  595.  
  596.  Unit WinRes: Using Dialog Templates
  597.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  598.  
  599. The WinRes Unit provides flexible mechanisms for using Windows' resources
  600. describing dialog windows.
  601.  
  602. Using InitClasses, the class management is initialized. Using RegisterClass,
  603. you can register the window classes (for dialogs and controls) appearing
  604. in the resource. That means, you can define special creation functions for
  605. each window class. Using DoneClasses, the class management is closed.
  606.  
  607.  Refer to:  Unit WinRes
  608.  
  609.  Copyright and
  610.  Disclaimer of Warranty
  611.  ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  612.  
  613. The files of the software product provided as a whole are called Software.
  614.  
  615.  Copyright
  616.  
  617.  The Software is neither "Public Domain",
  618.  nor "Freeware". The Software is protected
  619.  by the laws of the Federal Republic of
  620.  Germany and international treaties.
  621.  
  622.  Copyright (C) 1993, 1994 Matthias Köppe,
  623.  Erzbergerstraße 12, D-39104 Magdeburg.
  624.  All rights reserved.
  625.  
  626.  Disclaimer of Warranty
  627.  
  628.  The Software is supplied as is. The authors
  629.  disclaim all warranties, expressed or
  630.  implied, including but not limited to the
  631.  warranties of merchantability and of fitness
  632.  for any purpose. The authors assume no
  633.  liability for damages, direct or
  634.  consequential, which may result from
  635.  the use of the Software.
  636.  
  637.  General Agreement
  638.  
  639.  Using the Software, you agree to the general
  640.  agreement, which is stated in the file
  641.  SOFTWARE.DOC.
  642.  
  643.  If you have a copy of the Software that
  644.  doesn't include this file, refer to:
  645.  
  646.  Matthias Koeppe
  647.  MKM GbR f. Softwareentwicklung
  648.  Erzbergerstraße 12
  649.  D-39104 Magdeburg
  650.  GERMANY
  651.  
  652.  Phone/Fax  +49-391-5 43 01 28
  653.  CIS        [100331,174]
  654.  
  655.